“Object-oriented” computer programming (OOP) involves the use of programming languages and techniques that are based on the concept of an “object”, which is a “data structure” (or abstract programming mechanism) for encapsulating data to be used by a set of routines (or “methods”) that process the data. These methods perform operations on the data contained within all objects that are instances of a particular “class”. Each object class has a position in a “class hierarchy” that progressively defines unique characteristics or attributes for the data contained in the objects of its class(es), and methods or code in one class can be “passed down” the hierarchy to be inherited by a “subclass” from a “superclass”. A “procedure call” is described as “invoking a method” to operate on (i.e., process the data contained in) an object, by identifying the method as associated with that object class to determine how to perform that operation on the given object, and if the method is not defined for that object class then an attempt is made to identify it in each of the superclasses within that class hierarchy. The programming interface providing access to the data contained in an object is well defined to allow the code implementing a method to be changed as long as the interface remains the same.
“Java” is an object-oriented general purpose programming language developed to support use of distributed platform-independent applications. Java generates an architecture-neutral object file that is executable on any computer processor supporting the Java system, so that its programs can be run independently (or in a “stand-alone” manner) on personal computers (PCs) in both individual and network applications (including those using the internet). Java has an extensive library of routines providing portable interfaces for internet-based client-server computer communications protocols such as Transmission Control Protocol over Internet Protocol (TCP/IP) and including Hypertext Transfer Protocol (HTTP) and File Transfer Protocol (FTP), in order to allow a program application to access an object across the internet via use of a Uniform Resource Locator (URL) specifying the world-wide-web (“www”) address defining the location of the server storing (or “hosting”) the object.
Most internet-based “web” application program models and technologies are based on the Common Gateway Interface (CGI) standard. Such programming is centered around a single entry point (i.e., the HTTP request); for example Java “servlets”, PHP hypertext preprocessors and “Java server pages” (JSP). A much simpler programming model than CGI and one that offers higher productivity is that used with “standalone” programs (such as Eclipse IDE) which use a much richer processing “event structure” and also treat computer graphical user interface (GUI) elements as easily accessible and modifiable program objects. However, standalone programs have scalability issues when deployed on web-servers as web applications. When a browser client connects to a web server to request use of a standalone application program, user interface data objects are created to service the request, but these objects are generally not automatically returned to a “pool” (i.e., collected for reuse) or taken out of memory after processing of the request, which causes an object to occupy system memory for a duration greater than that required for processing its associated HTTP request(s). CGI applications normally do not have this problem since they release use of all memory between requests, but the price paid with CGI is a less coherent object-oriented programming model. These are the limitations of the prior art that are eliminated by the invention as described below.
The invention improves the “scalability” of deployment tools for converting standalone application programs normally operated on a local host computer so that they can be run as network or internet-based web applications that accommodate large numbers of users. In such tools, the application program is located (i.e., resides and runs) on a host server that is accessible over the internet or another computer network, and the interactions between a user and the application program take place in a manner that is unnoticeable (or “transparent”) to both the user and the programmer of the standalone application. This invention enhances a system that allows a standalone application program to be converted into an internet-based web application with no changes, thereby greatly improving the turnaround time for rapid prototyping. Although the invention is described herein as preferably being applicable to Java programming, it also applies to other programming languages that support the concept(s) of structures or objects, such as Smalltalk; C++; C; Objective-C; Ruby; Python; Perl; PHP or C#.